#ifndef __MOTOR_H_
#define __MOTOR_H_
#endif

#define AIN1_ON() HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin, GPIO_PIN_SET)
#define AIN1_DOWN() HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin, GPIO_PIN_RESET)
#define AIN2_ON() HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin, GPIO_PIN_SET)
#define AIN2_DOWN() HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin, GPIO_PIN_RESET)
#define BIN1_ON() HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin, GPIO_PIN_SET)
#define BIN1_DOWN() HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin, GPIO_PIN_RESET)
#define BIN2_ON() HAL_GPIO_WritePin(BIN2_GPIO_Port,BIN2_Pin, GPIO_PIN_SET)
#define BIN2_DOWN() HAL_GPIO_WritePin(BIN2_GPIO_Port,BIN2_Pin, GPIO_PIN_RESET)
#define STBY_ON() HAL_GPIO_WritePin(STBY_GPIO_Port,STBY_Pin, GPIO_PIN_SET)
#define STBY_DOWN() HAL_GPIO_WritePin(STBY_GPIO_Port,STBY_Pin, GPIO_PIN_RESET)


#define MotorLeft_Pwm(x) __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,x)
#define MotorRight_Pwm(x) __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_3,x)

void Motor_Init();
void Motor_Left_GetCounter();
int Motor_Right_GetCounter();
int Banlance_PID(float Angle,float Mechanical_balance,float Gyro);
void Motor_Out();